
if (navigator.product == "Gecko") {
	Document.prototype.attachEvent = function (sType, fHandler) {
		var shortTypeName = sType.replace(/on/, "");
		fHandler._ieEmuEventHandler = function (e) {
			window.event = e;
			return fHandler();
		};
		this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);
	};
	Event.prototype.__defineSetter__("returnValue", function (value) {
		if (!value) {
			this.preventDefault();
		}
		return value;
	});
	Event.prototype.__defineGetter__("srcElement", function () {
		var node = this.target;
		while (node.nodeType != 1) {
			node = node.parentNode;
		}
		return node;
	});
	HTMLElement.prototype.attachEvent = function (sType, fHandler) {
		var shortTypeName = sType.replace(/on/, "");
		fHandler._ieEmuEventHandler = function (e) {
			window.event = e;
			return fHandler();
		};
		this.addEventListener(shortTypeName, fHandler._ieEmuEventHandler, false);
	};
	HTMLElement.prototype.insertAdjacentElement = function (where, parsedNode) {
		switch (where) {
		  case "beforeBegin":
			this.parentNode.insertBefore(parsedNode, this);
			break;
		  case "afterBegin":
			this.insertBefore(parsedNode, this.firstChild);
			break;
		  case "beforeEnd":
			this.appendChild(parsedNode);
			break;
		  case "afterEnd":
			if (this.nextSibling) {
				this.parentNode.insertBefore(parsedNode, this.nextSibling);
			} else {
				this.parentNode.appendChild(parsedNode);
			}
			break;
		}
	};
}
$BindAsEventListener = function (sender, listener) {
	var __method = sender;
	return function (event) {
		return __method.call(listener, event || window.event);
	};
};
function __sb() {
	this.s = new Array();
	this.i = 0;
	this.a = function (t) {
		this.s[this.i++] = t;
	};
	this.j = function () {
		return this.s.join("");
	};
}
function $(id) {
	return document.getElementById(id);
}
var $d = null;
function My97DatePicker() {
	if (parent == window) {
		return;
	}
	if (location.href.substring(location.href.length - 3).toLowerCase() == "#97") {
		location.href = location.href.substring(0, location.href.length - 3);
		return;
	} else {
		location.href = location.href + "#97";
	}
	this.init();
	this.dd = document.createElement("DIV");
	this.dd.style.cssText = "position:absolute;z-index:9998;display:block;";
	this.dd.obj = this;
	this.dd.className = "WdateDiv";
	this.dd.innerHTML = this._createPickerHTML();
	var tmpImgs = this.dd.getElementsByTagName("img");
	this.dd.navLeftImg = tmpImgs[0];
	this.dd.leftImg = tmpImgs[1];
	this.dd.rightImg = tmpImgs[2];
	this.dd.navRightImg = tmpImgs[3];
	this.dd.navLeftImg.onclick = function () {
		$d.yInput.value = parseInt($d.yInput.value) - 1;
		$d.obj.redraw();
	};
	this.dd.leftImg.onclick = function () {
		if (parseInt($d.mInput.getAttribute("realValue")) > 1) {
			$d.mInput.setAttribute("realValue", parseInt($d.mInput.getAttribute("realValue")) - 1);
		} else {
			$d.mInput.setAttribute("realValue", 12);
			$d.yInput.value = parseInt($d.yInput.value) - 1;
		}
		$d.mInput.value = dpcfg.aMonStr[parseInt($d.mInput.getAttribute("realValue")) - 1];
		$d.obj.redraw();
	};
	this.dd.rightImg.onclick = function () {
		if (parseInt($d.mInput.getAttribute("realValue")) < 12) {
			$d.mInput.setAttribute("realValue", parseInt($d.mInput.getAttribute("realValue")) + 1);
		} else {
			$d.mInput.setAttribute("realValue", 1);
			$d.yInput.value = parseInt($d.yInput.value) + 1;
		}
		$d.mInput.value = dpcfg.aMonStr[parseInt($d.mInput.getAttribute("realValue")) - 1];
		$d.obj.redraw();
	};
	this.dd.navRightImg.onclick = function () {
		$d.yInput.value = parseInt($d.yInput.value) + 1;
		$d.obj.redraw();
	};
	var tmpInputs = this.dd.getElementsByTagName("input");
	this.dd.mInput = tmpInputs[0];
	this.dd.yInput = tmpInputs[1];
	this.dd.mInput.setAttribute("realValue", this.month);
	this.dd.mInput.value = dpcfg.aMonStr[this.month - 1];
	this.dd.yInput.value = this.year;
	var tmpDivs = this.dd.getElementsByTagName("div");
	this.dd.titleDiv = tmpDivs[0];
	this.dd.mDiv = tmpDivs[3];
	this.dd.yDiv = tmpDivs[5];
	this.dd.dDiv = tmpDivs[7];
	this.dd.tDiv = tmpDivs[8].firstChild;
	this.dd.bDiv = tmpDivs[10];
	this.dd.dDiv.innerHTML = this._createDateTable();
	this._inputKeydown = function () {
		var evt = event;
		var k = (evt.which == undefined) ? evt.keyCode : evt.which;
		if (!((k >= 48 && k <= 57) || (k >= 96 && k <= 105) || k == 8 || k == 46 || k == 37 || k == 39 || k == 9)) {
			evt.returnValue = false;
		}
	};
	this.dd.mInput.attachEvent("onkeydown", function () {
		var evt = event;
		var k = (evt.which == undefined) ? evt.keyCode : evt.which;
		if (k == 9) {
			$d.mDiv.style.display = "none";
		}
		if (event.srcElement.value.length - document.selection.createRange().text.length == 2) {
			event.returnValue = false;
		}
	});
	this.dd.yInput.attachEvent("onkeydown", function () {
		var evt = event;
		var k = (evt.which == undefined) ? evt.keyCode : evt.which;
		if (k == 9) {
			$d.yDiv.style.display = "none";
		}
	});
	this.dd.mInput.attachEvent("onkeydown", this._inputKeydown);
	this.dd.yInput.attachEvent("onkeydown", this._inputKeydown);
	this.dd.yInput.onblur = function () {
		var v = parseInt(this.value);
		if (v < $d.obj.minDate.year) {
			this.value = $d.obj.minDate.year;
		} else {
			if (v > $d.obj.maxDate.year) {
				this.value = $d.obj.maxDate.year;
			}
		}
		if (v != $d.obj.year) {
			$d.obj.redraw();
		}
		this.className = "yminput";
	};
	this.dd.mInput.onblur = function () {
		if (parseInt(this.value) > 12) {
			this.value = "12";
		} else {
			if (v < 1) {
				this.value = "1";
			}
		}
		var tmpYM = $d.obj.year * 100 + parseInt(this.value) * 1;
		if (tmpYM < ($d.obj.minDate.year * 100 + $d.obj.minDate.month * 1)) {
			this.value = $d.obj.minDate.month;
		} else {
			if (tmpYM > ($d.obj.maxDate.year * 100 + $d.obj.maxDate.month * 1)) {
				this.value = $d.obj.maxDate.month;
			}
		}
		var v = parseInt(this.value);
		this.setAttribute("realValue", v);
		this.value = dpcfg.aMonStr[v - 1];
		if (v != $d.obj.month) {
			$d.obj.redraw();
		}
		this.className = "yminput";
	};
	this.dd.mInput.onfocus = function () {
		this.className = "yminputfocus";
		this.value = this.getAttribute("realValue");
		this.select();
		if ($d.obj.hasDate) {
			$d.obj._fillmonth();
			$d.mDiv.style.display = "block";
		}
	};
	this.dd.yInput.onfocus = function () {
		this.className = "yminputfocus";
		this.select();
		if ($d.obj.hasDate) {
			$d.obj._fillyear();
			$d.yDiv.style.display = "block";
		}
	};
	this.dd.hhInput = tmpInputs[2];
	this.dd.hmSplitInput = tmpInputs[3];
	this.dd.mmInput = tmpInputs[4];
	this.dd.msSplitInput = tmpInputs[5];
	this.dd.ssInput = tmpInputs[6];
	this.dd.clearInput = tmpInputs[7];
	this.dd.todayInput = tmpInputs[8];
	this.dd.okInput = tmpInputs[9];
	this.dd.hhInput.onfocus = this.dd.mmInput.onfocus = this.dd.ssInput.onfocus = function () {
		this.select();
		$d.obj.currFocus = this;
	};
	this.dd.hhInput.onblur = function () {
		if (parseInt(this.value) > 23) {
			this.value = "23";
		} else {
			if (parseInt(this.value) < 0) {
				this.value = "0";
			}
		}
	};
	this.dd.mmInput.onblur = this.dd.ssInput.onblur = function () {
		if (parseInt(this.value) > 59) {
			this.value = "59";
		} else {
			if (parseInt(this.value) < 0) {
				this.value = "0";
			}
		}
	};
	this.dd.hmSplitInput.attachEvent("onfocus", function () {
		$d.mmInput.focus();
	});
	this.dd.msSplitInput.attachEvent("onfocus", function () {
		$d.ssInput.focus();
	});
	this.dd.ssInput.attachEvent("onkeydown", function () {
		var evt = event;
		var k = (evt.which == undefined) ? evt.keyCode : evt.which;
		if (k == 9) {
			$d.downButton.focus();
		}
	});
	this.dd.hhInput.attachEvent("onkeydown", this._inputKeydown);
	this.dd.mmInput.attachEvent("onkeydown", this._inputKeydown);
	this.dd.ssInput.attachEvent("onkeydown", this._inputKeydown);
	var tmpBtn = this.dd.getElementsByTagName("button");
	this.dd.upButton = tmpBtn[0];
	this.dd.downButton = tmpBtn[1];
	this.dd.upButton.onclick = function () {
		if ($d.obj.currFocus == undefined) {
			$d.obj.currFocus = $d.mmInput;
		}
		if (($d.obj.currFocus == $d.hhInput && parseInt($d.obj.currFocus.value) < 23) || ($d.obj.currFocus != $d.hhInput && parseInt($d.obj.currFocus.value) < 59)) {
			$d.obj.currFocus.value = parseInt($d.obj.currFocus.value) + 1;
		} else {
			$d.obj.currFocus.value = "0";
		}
		$d.obj.currFocus.focus();
	};
	this.dd.downButton.onclick = function () {
		if ($d.obj.currFocus == undefined) {
			$d.obj.currFocus = $d.mmInput;
		}
		if (parseInt($d.obj.currFocus.value) > 0) {
			$d.obj.currFocus.value = parseInt($d.obj.currFocus.value) - 1;
		} else {
			if ($d.obj.currFocus == $d.hhInput) {
				$d.obj.currFocus.value = "23";
			} else {
				$d.obj.currFocus.value = "59";
			}
		}
		$d.obj.currFocus.focus();
	};
	$d = this.dd;
	document.body.insertAdjacentElement("beforeEnd", this.dd);
	this._setOkInput();
	this._setShowAndHide();
}
My97DatePicker.prototype.init = function () {
	this._todayDate = new Date();
	this.t_year = this._todayDate.getFullYear();
	this.t_month = this._todayDate.getMonth() + 1;
	this.t_date = this._todayDate.getDate();
	this.t_hour = this._todayDate.getHours();
	this.t_minute = this._todayDate.getMinutes();
	this.t_sec = this._todayDate.getSeconds();
	var tmpdd = parent.$dp;
	this.eCont = tmpdd.obj.eCont;
	this.dateFmt = tmpdd.obj.dateFmt || dpcfg.dateFmt;
	this.showTime = (tmpdd.obj.showTime == true) ? tmpdd.obj.showTime : dpcfg.showTime;
	this.skin = tmpdd.obj.skin || dpcfg.skin;
	this.onPicked = new parent.$dp.obj.win.Function(this.eCont.getAttribute("ONPICKED"));
	this.onPicked = $BindAsEventListener(this.onPicked, this.eCont);
	this.hasYear = (this.dateFmt.indexOf("%Y") == -1) ? false : true;
	this.hasMonth = (this.dateFmt.indexOf("%M") == -1) ? false : true;
	this.hasDate = (this.dateFmt.indexOf("%D") == -1) ? false : true;
	this.hasHour = (this.dateFmt.indexOf("%h") == -1) ? false : true;
	this.hasMin = (this.dateFmt.indexOf("%m") == -1) ? false : true;
	this.hasSec = (this.dateFmt.indexOf("%s") == -1) ? false : true;
	this.minDate = this._doCustomDate(this.eCont.getAttribute("MINDATE"), dpcfg.realValueShortFmt, "min");
	this.maxDate = this._doCustomDate(this.eCont.getAttribute("MAXDATE"), dpcfg.realValueShortFmt, "max");
	if ((this.minDate.year * 10000 + this.minDate.month * 100 + this.minDate.date * 1) > (this.maxDate.year * 10000 + this.maxDate.month * 100 + this.maxDate.date * 1)) {
		alert("\u6700\u5c0f\u65e5\u671f\u4e0d\u80fd\u5927\u4e8e\u6700\u5927\u65e5\u671f(MinDate Cannot be bigger than MaxDate)!");
		parent.$dp.obj.eCont.onfocus = function () {
		};
		parent.$dp.obj.eCont.onclick = function () {
			alert("\u6700\u5c0f\u65e5\u671f\u4e0d\u80fd\u5927\u4e8e\u6700\u5927\u65e5\u671f(MinDate Cannot be bigger than MaxDate)!");
		};
	}
	this._setActiveCSS();
	this._initDate(this.eCont.value, this.dateFmt);
	if (this.eCont.value != "" && this.eCont.getAttribute("REALVALUE") == null && this._judgeCorrectDateTime(this.eCont.value)) {
		this._setRealValue();
	}
	this.s_year = this.year;
	this.s_month = this.month;
	this.s_date = this.date;
	this.eCont.getValue = function () {
		if (this.value == "") {
			return "";
		} else {
			return this.getAttribute("REALVALUE");
		}
	};
};
My97DatePicker.prototype._setShowAndHide = function () {
	if (!(this.hasYear || this.hasMonth)) {
		this.dd.titleDiv.style.display = "none";
	} else {
		this.dd.titleDiv.style.display = "";
	}
	if (!this.hasYear) {
		this.dd.yInput.style.display = this.dd.navLeftImg.style.display = this.dd.navRightImg.style.display = "none";
	} else {
		this.dd.yInput.style.display = this.dd.navLeftImg.style.display = this.dd.navRightImg.style.display = "";
	}
	if (!this.hasMonth) {
		this.dd.mInput.style.display = this.dd.leftImg.style.display = this.dd.rightImg.style.display = "none";
	} else {
		this.dd.mInput.style.display = this.dd.leftImg.style.display = this.dd.rightImg.style.display = "";
	}
	if (!this.hasDate) {
		this.dd.dDiv.style.display = "none";
	} else {
		this.dd.dDiv.style.display = "";
	}
	if (!this.hasHour) {
		this.dd.hhInput.disabled = "disabled";
	} else {
		this.dd.hhInput.disabled = "";
	}
	if (!this.hasMin) {
		this.dd.mmInput.disabled = "disabled";
	} else {
		this.dd.mmInput.disabled = "";
	}
	if (!this.hasSec) {
		this.dd.ssInput.disabled = "disabled";
	} else {
		this.dd.ssInput.disabled = "";
	}
};
My97DatePicker.prototype._setActiveCSS = function () {
	var i, a, main;
	for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) {
		if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if (a.getAttribute("title") == this.skin) {
				a.disabled = false;
			}
		}
	}
};
My97DatePicker.prototype.redraw = function () {
	this.year = this.dd.yInput.value;
	this.month = this.dd.mInput.getAttribute("realValue");
	this.dd.dDiv.innerHTML = this._createDateTable();
	autoSizeIframe();
};
My97DatePicker.prototype._initDate = function (str, fmt) {
	this.year = this.month = this.date = this.hour = this.minute = this.sec = -1;
	var v = str.split(/\W+/);
	var f = fmt.match(/%./g);
	for (var i = 0; i < f.length; i++) {
		if (v[i]) {
			if (f[i].toLowerCase() == "%y") {
				this.year = parseInt(v[i], 10);
				if (isNaN(this.year)) {
					this.year = this.t_year;
				}
			} else {
				if (f[i] == "%M") {
					this.month = parseInt(v[i], 10);
					if (isNaN(this.month)) {
						this.month = this.t_month;
					}
				} else {
					if (f[i].toLowerCase() == "%d") {
						this.date = parseInt(v[i], 10);
						if (isNaN(this.date)) {
							this.date = this.t_date;
						}
					} else {
						if (f[i].toLowerCase() == "%h") {
							this.hour = parseInt(v[i], 10);
							if (isNaN(this.hour)) {
								this.hour = this.t_hour;
							}
						} else {
							if (f[i] == "%m") {
								this.minute = parseInt(v[i], 10);
								if (isNaN(this.minute)) {
									this.minute = this.t_minute;
								}
							} else {
								if (f[i].toLowerCase() == "%s") {
									this.sec = parseInt(v[i], 10);
									if (isNaN(this.sec)) {
										this.sec = this.t_sec;
									}
								}
							}
						}
					}
				}
			}
		}
	}
	if (!this._isDate(this.year + "-" + this.month + "-" + this.date)) {
		this.year = this.t_year;
		this.month = this.t_month;
		this.date = this.t_date;
	}
	if ((this.hour < 0) || (this.hour > 23)) {
		this.hour = this.t_hour;
	}
	if ((this.minute < 0) || (this.minute > 59)) {
		this.minute = this.t_minute;
	}
	if ((this.sec < 0) || (this.sec > 59)) {
		this.sec = this.t_sec;
	}
};
My97DatePicker.prototype._isDate = function (sDate) {
	return sDate.match(/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[0-9])|([1-2][0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/);
};
My97DatePicker.prototype._createPickerHTML = function () {
	var s = new __sb();
	s.a("<div id=dpTitle>");
	s.a("<div style='float:left;margin:2px;width:45px'><img style='cursor:pointer;' src='skin/" + this.skin + "/navLeft.gif' width=14 height=16 /><img style='cursor:pointer;' src='skin/" + this.skin + "/left.gif' width=14 height=16 /></div>");
	s.a("<div style='float:left;margin:2px;'><div style='margin-left:0px;width:62px' class='ymsel'></div><input class='yminput' style='margin-top:1px;width:30px;' maxlength=3></div>");
	s.a("<div style='float:left;margin:2px'><div style='margin-left:0px' class='ymsel'></div><input class='yminput' style='margin-top:-1px;width:40px;' maxlength=4></div>");
	s.a("<div style='float:right;margin:2px'><img style='cursor:pointer;' src='skin/" + this.skin + "/right.gif' width=14 height=16 /><img style='cursor:pointer;' src='skin/" + this.skin + "/navRight.gif' width=14 height=16 /></div></div>");
	s.a("<div></div>");
	s.a("<div>");
	s.a(this._createTimeTable());
	s.a("</div>");
	return s.j();
};
My97DatePicker.prototype._createDateTable = function () {
	var tempYear, tempMonth;
	if ((this.year * 100 + this.month * 1) < (this.minDate.year * 100 + this.minDate.month * 1)) {
		this.dd.yInput.value = tempYear = this.minDate.year;
		tempMonth = this.minDate.month;
		this.dd.mInput.value = dpcfg.aMonStr[tempMonth - 1];
		this.dd.mInput.setAttribute("realValue", tempMonth);
	} else {
		if ((this.year * 100 + this.month * 1) > (this.maxDate.year * 100 + this.maxDate.month * 1)) {
			this.dd.yInput.value = tempYear = this.maxDate.year;
			tempMonth = this.maxDate.month;
			this.dd.mInput.value = dpcfg.aMonStr[tempMonth - 1];
			this.dd.mInput.setAttribute("realValue", tempMonth);
		} else {
			tempYear = this.year;
			tempMonth = this.month;
		}
	}
	var firstDay, firstDate, lastDay, lastDate;
	var s = new __sb();
	var i, j, k;
	firstDay = new Date(tempYear, tempMonth - 1, 1).getDay();
	firstDate = 1 - firstDay;
	lastDay = new Date(tempYear, tempMonth, 0).getDay();
	lastDate = new Date(tempYear, tempMonth, 0).getDate();
	s.a("<table id=dpDayTable width=100% border=0 cellspacing=0 cellpadding=0>");
	s.a("<tr id=dpWeekTitle align=center>");
	var ss = new Array();
	for (i = 0; i < 7; i++) {
		s.a("<td>" + dpcfg.aWeekStr[i] + "</td>");
	}
	var classStr = "";
	var chassOnStr = "";
	var isThisMonth = ((tempYear == this.t_year) && (tempMonth == this.t_month));
	var isSelMonth = ((tempYear == this.s_year) && (tempMonth == this.s_month));
	var needCompareMinDate = ((tempYear * 100 + tempMonth * 1) == (this.minDate.year * 100 + this.minDate.month));
	var needCompareMaxDate = ((tempYear * 100 + tempMonth * 1) == (this.maxDate.year * 100 + this.maxDate.month));
	var needCompareBoth = needCompareMinDate && needCompareMaxDate;
	var isValidDate = !needCompareMinDate && !needCompareMaxDate;
	for (i = 1, j = firstDate; i < 7; i++) {
		s.a("<tr>");
		for (k = 0; k < 7; k++) {
			if (j >= 1 && j <= lastDate) {
				if (isSelMonth && (j == this.s_date)) {
					classStr = "Wselday";
				} else {
					if (isThisMonth && (j == this.t_date)) {
						classStr = "Wtoday";
					} else {
						classStr = ((dpcfg.highLineWeekDay && (k == 0 || k == 6)) ? "Wwday" : "Wday");
					}
				}
				classOnStr = ((dpcfg.highLineWeekDay && (k == 0 || k == 6)) ? "WwdayOn" : "WdayOn");
				s.a("<td align=center ");
				if (isValidDate || (!needCompareBoth && ((needCompareMinDate && j >= this.minDate.date) || (needCompareMaxDate && j <= this.maxDate.date))) || (needCompareBoth && (j >= this.minDate.date) && (j <= this.maxDate.date))) {
					s.a("onclick=\"$d.obj.pickDate(null,null," + j + ");\" ");
					s.a("onmouseover=\"this.className='" + classOnStr + "'\" ");
					s.a("onmouseout=\"this.className='" + classStr + "'\" ");
				} else {
					classStr = "WinvalidDay";
				}
				s.a("class=" + classStr);
				s.a("><span>" + j + "</span>");
			} else {
				s.a("<td><span></span>");
			}
			j++;
			s.a("</td>");
		}
		s.a("</tr>");
	}
	s.a("</table>");
	return s.j();
};
My97DatePicker.prototype._createTimeTable = function () {
	var s = new __sb();
	s.a("<div id=dpTime style='" + ((this.showTime) ? "" : "display:none;") + "float:left;margin-top:3px'><table cellspacing=0 cellpadding=0 border=0><tr><td rowspan=2><span id=dpTimeStr>" + dpcfg.timeStr + "</span>");
	s.a(" <input class=tB maxlength=2 value=" + this.hour + "><input value=':' class=tm readonly>");
	s.a("<input class=tE maxlength=2 value=" + this.minute + "><input value=':' class=tm readonly>");
	s.a("<input class=tE maxlength=2 value=" + this.sec + "></td><td>");
	s.a("<button id=dpTimeUp></button></td></tr><tr><td><button id=dpTimeDown></button></td></tr></table></div>");
	s.a("<div id=dpButton style='float:right;margin-top:3px;text-align:right;'>");
	s.a("<input id=dpClearInput type=button value='" + dpcfg.clearStr + "'> <input id=dpTodayInput type=button value='" + dpcfg.todayStr + "'> <input id=dpOkInput type=button value='" + dpcfg.okStr + "'>");
	s.a("</div>");
	return s.j();
};
My97DatePicker.prototype._fillmonth = function () {
	var s = new __sb();
	s.a("<table cellspacing=0 cellpadding=2 border=0>");
	var i, n = 0, v = parseInt(this.dd.mInput.getAttribute("realValue"));
	var aMonStrT = new Array(12);
	var aMonStrV = new Array(12);
	for (i = 0; i < 11; i++) {
		if (i + 1 == v) {
			n = 1;
		}
		aMonStrT[i] = dpcfg.aMonStr[n + i];
		aMonStrV[i] = n + i + 1;
	}
	this.year = parseInt(this.dd.yInput.value);
	var needCompareMinMonth = this.year == this.minDate.year;
	var needCompareMaxMonth = this.year == this.maxDate.year;
	var needCompareBoth = needCompareMinMonth && needCompareMaxMonth;
	var validMonth = (this.year > this.minDate.year && this.year < this.maxDate.year);
	var isValidMonth;
	for (i = 0; i < 6; i++) {
		s.a("<tr><td ");
		isValidMonth = (validMonth) || (!needCompareBoth && ((needCompareMinMonth && aMonStrV[i] >= this.minDate.month) || (needCompareMaxMonth && aMonStrV[i] <= this.maxDate.month))) || (needCompareBoth && (aMonStrV[i] >= this.minDate.month && aMonStrV[i] <= this.maxDate.month));
		s.a((isValidMonth) ? "class='Wym' onmouseover=\"this.className='WdayOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.mInput.value=" + aMonStrV[i] + ";$d.mDiv.style.display='none';$d.mInput.blur();\"" : "class='Winvalidym'");
		s.a(">" + aMonStrT[i] + "</td>");
		if (i == 5) {
			break;
		}
		s.a("<td ");
		isValidMonth = (validMonth) || (!needCompareBoth && ((needCompareMinMonth && aMonStrV[i + 6] >= this.minDate.month) || (needCompareMaxMonth && aMonStrV[i + 6] <= this.maxDate.month))) || (needCompareBoth && (aMonStrV[i + 6] >= this.minDate.month && aMonStrV[i + 6] <= this.maxDate.month));
		s.a((isValidMonth) ? "class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.mInput.value=" + aMonStrV[i + 6] + ";$d.mDiv.style.display='none';$d.mInput.blur();\"" : "class='Winvalidym'");
		s.a(">" + aMonStrT[i + 6] + "</td></tr>");
	}
	s.a("<td align=center onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.mDiv.style.display='none';\">\xd7</td</tr>");
	s.a("</table>");
	this.dd.mDiv.innerHTML = s.j();
};
My97DatePicker.prototype._fillyear = function (minV, maxV) {
	if (minV == null || maxV == null) {
		var v = parseInt(this.dd.yInput.value);
		minV = v - 5;
		maxV = v + 4;
	}
	var i;
	var a = new Array(maxV - minV);
	for (i = minV; i <= maxV; i++) {
		a[i - minV] = i;
	}
	var n = (a.length / 2);
	var s = new __sb();
	var isValidYear;
	s.a("<table cellspacing=0 cellpadding=2 border=0>");
	for (i = 0; i < n; i++) {
		isValidYear = (a[i] >= this.minDate.year && a[i] <= this.maxDate.year);
		s.a("<tr><td ");
		s.a((isValidYear) ? "class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.yInput.value='" + a[i] + "';$d.yDiv.style.display='none';$d.yInput.blur();\"" : "class='Winvalidym'");
		s.a(">" + a[i] + "</td><td ");
		isValidYear = (a[i + n] >= this.minDate.year && a[i + n] <= this.maxDate.year);
		s.a((isValidYear) ? "class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.yInput.value='" + a[i + n] + "';$d.yDiv.style.display='none';$d.yInput.blur();\"" : "class='Winvalidym'");
		s.a(">" + a[i + n] + "</td></tr>");
	}
	s.a("</table>");
	s.a("<table cellspacing=0 cellpadding=3 border=0><tr><td ");
	s.a((this.minDate.year < minV) ? "class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown='$d.obj._fillyear(" + (minV - 10) + "," + (maxV - 10) + ")'" : "class='Winvalidym'");
	s.a(">\u2190</td><td class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown=\"$d.yDiv.style.display='none';$d.yInput.blur();\">\xd7</td><td ");
	s.a((this.maxDate.year > maxV) ? "class='Wym' onmouseover=\"this.className='WymOn'\" onmouseout=\"this.className='Wym'\" onmousedown='$d.obj._fillyear(" + (minV + 10) + "," + (maxV + 10) + ")'" : "class='Winvalidym'");
	s.a(">\u2192</td></tr></table>");
	this.dd.yDiv.innerHTML = s.j();
};
My97DatePicker.prototype._setOkInput = function () {
	this.dd.clearInput.onclick = function () {
		$d.obj.eCont.value = "";
	};
	this.dd.todayInput.onclick = function () {
		var d = $d.obj;
		d.pickDate(d.t_year, d.t_month, d.t_date, d.t_hour, d.t_minute, d.t_sec);
	};
	this.dd.okInput.onclick = function () {
		$d.obj.modifyDate();
	};
	if (this.eCont.value == "" && this.hasDate) {
		if (((this.t_year * 10000 + this.t_month * 100 + this.t_date * 1) >= (this.minDate.year * 10000 + this.minDate.month * 100 + this.minDate.date * 1)) && ((this.t_year * 10000 + this.t_month * 100 + this.t_date * 1) <= (this.maxDate.year * 10000 + this.maxDate.month * 100 + this.maxDate.date * 1))) {
			this.dd.todayInput.style.display = "inline";
			this.dd.clearInput.style.display = this.dd.okInput.style.display = "none";
		} else {
			this.dd.okInput.style.display = "inline";
			this.dd.todayInput.style.display = this.dd.clearInput.style.display = "none";
		}
		this.dd.bDiv.onmouseover = function () {
		};
		this.dd.bDiv.onmouseout = function () {
		};
	} else {
		this.dd.okInput.style.display = "inline";
		this.dd.clearInput.style.display = this.dd.todayInput.style.display = "none";
		this.dd.bDiv.onmouseover = function () {
			$d.tDiv.style.display = "none";
			$d.clearInput.style.display = "inline";
			if ((($d.obj.t_year * 10000 + $d.obj.t_month * 100 + $d.obj.t_date * 1) >= ($d.obj.minDate.year * 10000 + $d.obj.minDate.month * 100 + $d.obj.minDate.date * 1)) && (($d.obj.t_year * 10000 + $d.obj.t_month * 100 + $d.obj.t_date * 1) <= ($d.obj.maxDate.year * 10000 + $d.obj.maxDate.month * 100 + $d.obj.maxDate.date * 1))) {
				$d.obj.dd.todayInput.style.display = "inline";
			} else {
				$d.obj.dd.todayInput.style.display = "none";
			}
		};
		this.dd.bDiv.onmouseout = function () {
			if ($d.obj.showTime) {
				$d.tDiv.style.display = "inline";
			}
			$d.clearInput.style.display = $d.todayInput.style.display = "none";
		};
	}
};
My97DatePicker.prototype._returnDateStr = function (Y, M, D, h, m, s, fmt) {
	if (Y == null) {
		Y = this.year;
	}
	if (M == null) {
		M = this.month;
	}
	if (D == null) {
		D = this.date;
	}
	if (h == null) {
		h = this.hour;
	}
	if (m == null) {
		m = this.minute;
	}
	if (s == null) {
		s = this.sec;
	}
	if (fmt == null) {
		fmt = this.dateFmt;
	}
	var sDate = fmt.replace(/%[Yy]/, this._doStr(Y, 4)).replace(/%[M]/, this._doStr(M, 2)).replace(/%[Dd]/, this._doStr(D, 2));
	if (this.showTime) {
		sDate = sDate.replace(/%[Hh]/, this._doStr(h, 2)).replace(/%[m]/, this._doStr(m, 2)).replace(/%[Ss]/, this._doStr(s, 2));
	}
	return sDate;
};
My97DatePicker.prototype._doStr = function (s, len) {
	s = s + "";
	for (var i = s.length; i < len; i++) {
		s = "0" + s;
	}
	return s;
};
My97DatePicker.prototype._setRealValue = function (Y, M, D, h, m, s) {
	if (this.showTime) {
		this.eCont.setAttribute("REALVALUE", this._returnDateStr(Y, M, D, h, m, s, dpcfg.realValueLongFmt));
	} else {
		this.eCont.setAttribute("REALVALUE", this._returnDateStr(Y, M, D, null, null, null, dpcfg.realValueShortFmt));
	}
};
My97DatePicker.prototype.pickDate = function (Y, M, D, h, m, s) {
	if (Y == null) {
		Y = this.dd.yInput.value;
	}
	if (M == null) {
		M = this.dd.mInput.getAttribute("realValue");
	}
	if (D == null) {
		D = this.date;
	}
	this.year = Y;
	this.month = M;
	this.date = D;
	if (this.showTime) {
		if (h == null) {
			h = this.dd.hhInput.value;
		}
		if (m == null) {
			m = this.dd.mmInput.value;
		}
		if (s == null) {
			s = this.dd.ssInput.value;
		}
		this.hour = h;
		this.minute = m;
		this.sec = s;
		this.eCont.value = this._returnDateStr(Y, M, D, h, m, s);
	} else {
		this.eCont.value = this._returnDateStr(Y, M, D);
	}
	this._setRealValue(Y, M, D, h, m, s);
	$d.obj._markValue(true);
	parent.document.dateDiv.style.display = "none";
	this.onPicked();
};
My97DatePicker.prototype.modifyDate = function (Y, M, D, h, m, s) {
	if (Y == null) {
		Y = this.dd.yInput.value;
	}
	if (M == null) {
		M = this.dd.mInput.getAttribute("realValue");
	}
	if (D == null) {
		D = this.date;
	}
	this.year = Y;
	this.month = M;
	this.date = D;
	if (this.showTime) {
		if (h == null) {
			h = this.dd.hhInput.value;
		}
		if (m == null) {
			m = this.dd.mmInput.value;
		}
		if (s == null) {
			s = this.dd.ssInput.value;
		}
		this.hour = h;
		this.minute = m;
		this.sec = s;
		this.eCont.value = this._returnDateStr(Y, M, D, h, m, s);
	} else {
		this.eCont.value = this._returnDateStr(Y, M, D);
	}
	if ((Y * 10000 + M * 100 + D * 1) < (this.minDate.year * 10000 + this.minDate.month * 100 + this.minDate.date * 1)) {
		Y = this.minDate.year;
		M = this.minDate.month;
		D = this.minDate.date;
	} else {
		if ((Y * 10000 + M * 100 + D * 1) > (this.maxDate.year * 10000 + this.maxDate.month * 100 + this.maxDate.date * 1)) {
			Y = this.maxDate.year;
			M = this.maxDate.month;
			D = this.maxDate.date;
		} else {
			while (!this._isDate(Y + "-" + M + "-" + D) && D > 0) {
				D--;
			}
		}
	}
	this.pickDate(Y, M, D);
};
My97DatePicker.prototype._markValue = function (bValue) {
	if (bValue) {
		this.eCont.className = this.eCont.className.replace(/ WdateFmtErr/, "");
	} else {
		var tempMode = dpcfg.errDealMode;
		while (true) {
			switch (tempMode) {
			  case 0:
				if (!confirm(dpcfg.errAlertMsg)) {
					tempMode = 2;
					continue;
				}
			  case 1:
				if (this.eCont.getAttribute("REALVALUE")) {
					this._judgeCorrectDateTime(this.eCont.getAttribute("REALVALUE"));
				} else {
					this.eCont.value = "";
				}
				this.eCont.className = this.eCont.className.replace(/ WdateFmtErr/, "");
				break;
			  case 2:
				this.eCont.className = this.eCont.className.replace(/ WdateFmtErr/, "");
				this.eCont.className = this.eCont.className.replace(/Wdate/, "Wdate WdateFmtErr");
				break;
			}
			break;
		}
	}
};
My97DatePicker.prototype._judgeCorrectDateTime = function (sDateTime) {
	var Y, M, D, h, m, s;
	var v = sDateTime.split(/\W+/);
	var f = this.dateFmt.match(/%./g);
	if(sDateTime.indexOf(".")<0||sDateTime.indexOf("-")<0){
		if(v.length == 1 && v[0].length > 4){
		   v = [];
		   v.push(sDateTime.substring(0,4));
		   if(sDateTime.length > 4){
		     v.push(sDateTime.substring(4,6));
		   }
		   if(sDateTime.length > 6){
		     v.push(sDateTime.substring(6,8));
		   }
		}
	}
	for (var i = 0; i < f.length; i++) {
		if (f[i].toLowerCase() == "%y") {
			Y = Number(v[i]);
			if (isNaN(Y)) {
				return false;
			}
		} else {
			if (f[i] == "%M") {
				M = Number(v[i]);
				if (isNaN(M)) {
					return false;
				}
			} else {
				
				if (f[i].toLowerCase() == "%d") {
					D = Number(v[i]);
					if (isNaN(D)) {
						return false;
					}
				} else {
					if (f[i].toLowerCase() == "%h") {
						h = Number(v[i]);
						if (isNaN(h)) {
							return false;
						}
					} else {
						if (f[i] == "%m") {
							m = Number(v[i]);
							if (isNaN(m)) {
								return false;
							}
						} else {
							if (f[i].toLowerCase() == "%s") {
								s = Number(v[i]);
								if (isNaN(s)) {
									return false;
								}
							}
						}
					}
				}
			}
		}
	}
	Y = Y || this.minDate.year;
	M = M || this.minDate.month;
	D = D || this.minDate.date;
	if (this._isDate(Y + "-" + M + "-" + D) && (h == undefined || (h >= 0) && (h <= 23)) && (s == undefined || (m >= 0) && (h <= 59)) && (s == undefined || (s >= 0) && (s <= 59))) {
		this.eCont.value = this._returnDateStr(Y, M, D, h, m, s);
		if (((Y * 10000 + M * 100 + D * 1) >= (this.minDate.year * 10000 + this.minDate.month * 100 + this.minDate.date * 1)) && ((Y * 10000 + M * 100 + D * 1) <= (this.maxDate.year * 10000 + this.maxDate.month * 100 + this.maxDate.date * 1))) {
			return true;
		}
	}
	return false;
};
My97DatePicker.prototype._doCustomDate = function (str, fmt, dvType) {
	var defaultValue = (dvType == "min") ? dpcfg.minDate : dpcfg.maxDate;
	if (!str || str == "") {
		str = defaultValue;
	}
	var re = /\{(.*?)\}/;
	var year, month, day;
	var arr;
	var tmpEval = "";
	var hasLastDay = (str.indexOf("#lastDay#") >= 0);
	str = str.replace(/#Year#/g, this.t_year).replace(/#Month#/g, this.t_month).replace(/#Day#/g, this.t_date).replace(/#lastDay#/, "0");
	if (str.substring(0, 3) == "#F{") {
		if ((arr = re.exec(str)) != null) {
			str = parent.$dp.obj.win.eval(arr[1]);
		} else {
			alert("Function error!");
			return;
		}
	} else {
		var i = 0;
		while ((arr = re.exec(str)) != null) {
			if (i++ == 97) {
				break;
			}
			arr.lastIndex = arr.index + arr[1].length + 1;
			tmpEval = parseInt(eval(arr[1]), 10);
			if (tmpEval < 0) {
				tmpEval = "19700" + (-tmpEval);
			}
			str = str.substring(0, arr.index) + tmpEval + str.substring(arr.lastIndex);
		}
	}
	if (str == "") {
		str = defaultValue;
	}
	var v = str.split(/\W+/);
	var f = fmt.match(/%./g);
	for (var i = 0; i < f.length; i++) {
		if (v[i]) {
			if (f[i].toLowerCase() == "%y") {
				year = parseInt(v[i], 10);
			} else {
				if (f[i] == "%M") {
					month = parseInt(v[i], 10);
				} else {
					if (f[i].toLowerCase() == "%d") {
						day = parseInt(v[i], 10);
					}
				}
			}
		}
	}
	year = ("" + year).replace(/^19700/, "-");
	month = ("" + month).replace(/^19700/, "-");
	day = ("" + day).replace(/^19700/, "-");
	if (!hasLastDay) {
		month -= 1;
	}
	var tmp = new Date();
	tmp = new Date(year, month, day);
	year = tmp.getFullYear();
	month = tmp.getMonth() + 1;
	day = tmp.getDate();
	if (isNaN(year) || isNaN(month) || isNaN(day)) {
		alert("\u65e5\u671f\u8303\u56f4\u683c\u5f0f\u9519\u8bef(Invalid MINDATE or MAXDATE)!\n\nYear:" + year + "  Month:" + month + "  Day:" + day);
	}
	return {"year":year, "month":month, "date":day};
};
function hideYMSel() {
	$d.yDiv.style.display = $d.mDiv.style.display = "none";
}
function autoSizeIframe() {
	if (window != parent) {
		var ifs = parent.document.getElementsByTagName("IFRAME");
		for (var i = 0; i < ifs.length; i++) {
			try {
				if (ifs[i].contentWindow == window) {
					var tmp = document.getElementsByTagName("div")[0];
					ifs[i].style.width = tmp.offsetWidth + "px";
					ifs[i].style.height = tmp.offsetHeight + "px";
				}
			}
			catch (e) {
				continue;
			}
		}
	}
}

